package com.example.fengyungo.service;

import com.example.fengyungo.domain.pojo.User;

import java.util.List;

public interface UserService {
    /**
     * 根据用户名和密码查询用户
     * @param username 用户名（账号）
     * @param password 密码
     * @return List<User>
     */
    List<User> getUserByUsernameAndPassword(String username, String password);

    /**
     * 新增用户
     * @param user User
     * @return Boolean
     */
    Boolean addUser(User user);

    /**
     * 通过用户名（账号）查找用户，用来判断用户名是否已被使用
     * @return List<User>
     */
    List<User> getUserByUsername(String username);

    /**
     * 通过邮箱查找用户，用来判断邮箱是否已被注册
     * @return List<User>
     */
    List<User> getUserByMail(String mail);

    /**
     * 更新用户昵称
     * @param nickname 昵称
     * @param id 用户id
     * @return Integer
     */
    Integer updateNicknameById(String nickname,String id);

    /**
     * 更新用户性别
     * @param sex 性别
     * @param id 用户id
     * @return Integer
     */
    Integer updateSexById(String sex,String id);

    /**
     * 更新用户电话
     * @param phone 电话
     * @param id 用户id
     * @return Integer
     */
    Integer updatePhoneById(String phone,String id);

    /**
     * 修改用户信息，根据id
     * @param user User
     * @return Integer
     */
    Integer updateUserById(User user);

    /**
     * 根据id查询用户
     * @param id 用户id
     * @return User
     */
    User getUserById(String id);

    /**
     * 获取用户旧密码
     *
     * @param username 用户名
     * @return String
     */
    String getOldPassword(String username);

    /**
     * 修改用户密码
     *
     * @param username 用户名
     * @param password 新密码
     * @return Integer
     */
    Integer updatePassword(String username, String password);

    /**
     * 根据条件查询用户
     *
     * @param user 用户
     * @return List<User>
     */
    List<User> getUsersByCondition(User user);

    /**
     * 获取所有用户
     * @return List<User>
     */
    List<User> getAllUsers();
}
